#include "hdl_led.h"

void hdl_led_init(GPIO_TypeDef *gpio_port,uint16_t gpio_pin)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    GPIO_InitStructure.GPIO_Pin = gpio_pin;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(gpio_port,&GPIO_InitStructure);
}

void Set_IOledStatus(GPIO_TypeDef *gpio_port,uint16_t ledx,BOOL bStatus)
{
    if(bStatus){
        GPIO_ResetBits(gpio_port, ledx);
    }else{
        GPIO_SetBits(gpio_port, ledx);
    }
}

BOOL Get_IOledStatus(uint16_t ledx)
{
    //DBG_MSG("GPIO_ReadOutputDataBit(LED_GPIO_PORT, LED0):%d\r\n",GPIO_ReadOutputDataBit(LED_GPIO_PORT, LED0));
    return (BOOL)GPIO_ReadOutputDataBit(LED_GPIO_PORT, ledx);
}

void Set_IOledToogle(GPIO_TypeDef *gpio_port,uint16_t ledx)
{   
    //CHKPNT;
    (Get_IOledStatus(ledx) == TRUE)?Set_IOledStatus(gpio_port,ledx,TRUE):Set_IOledStatus(gpio_port,ledx,FALSE);
}
